/**
 * 
 */
package gui.gestion;

import gui.MainWindow;
import gui.gestion.forms.MovForm;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;

import logica.Controlador;
import objetosNegocio.Movimiento;
import objetosNegocio.TipoMovimiento;

/** 
 * <!-- begin-UML-doc -->
 * <!-- end-UML-doc -->
 * @author AJ
 * @generated "UML a Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
 */
public class AltaMov extends JDialog {

	private static final long serialVersionUID = 1L;
	
	private MainWindow padre; //Ventana padre
	private MovForm movForm; //Formulario movimientos
	private Controlador controlador;
	private TipoMovimiento tipoMovimiento;

	public AltaMov(MainWindow padre, String title, TipoMovimiento tipo,Controlador controlador){
		super(padre,title);
		this.padre = padre;
		this.tipoMovimiento=tipo;
		this.controlador=controlador;
		
		buildAltaMov();
	}

	private void buildAltaMov() {
		
		this.setModal(true); //para que no se puedan lanzar mas ventanas hijas
		
		JPanel mainPanel = new JPanel();
		mainPanel.setLayout(new BorderLayout());
		
		JPanel buttonsPane = new JPanel();
		buttonsPane.setLayout(new GridLayout(8,1));
		
		JButton okButton = new JButton("Aceptar");
		okButton.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				okButtonAction();				
			}});
		
		buttonsPane.add(okButton);
		
		JButton exitButton = new JButton("Volver");
		exitButton.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				exitButtonAction();
			}});
		buttonsPane.add(exitButton);

		JPanel formPane = new JPanel();
		movForm= new MovForm(this.tipoMovimiento,controlador);
		
		
		mainPanel.add(formPane, BorderLayout.CENTER);
		mainPanel.add(buttonsPane,BorderLayout.EAST);
		
		formPane.add(movForm);
		
		this.add(mainPanel);
			
		this.pack();
		this.setLocationRelativeTo(null); //Centramos la ventana
		

			
	}

	private void okButtonAction() {
		boolean resultado=false;
		
		Movimiento movimiento = movForm.getMovObject();
		
		switch (tipoMovimiento){
			case ENTRADA:
				resultado=controlador.insertarMovimientoDeEntrada(movimiento);
				break;
			case SALIDA:
				resultado=controlador.insertarMovimientoDeSalida(movimiento);
				break;
			case INVENTARIO:
				resultado=controlador.insertarMovimientoDeInventario(movimiento);
				break;
		}
		if (resultado){
			this.padre.showInfo("Movimiento insertado correctamente");
			this.dispose();//cerrar la ventana
		}else{
			this.padre.showError("Se ha producido un error. Por favor revise el formulario");
		}
	}

	private void exitButtonAction() {
		this.dispose(); //Cerrar ventana
		
	}
}